﻿//--------------------------------------
// Copyright     : W.A.I.S. TECHNOLOGY 2003-2008 ; http://www.wais-fr.com ; email: infos@wais-fr.com
// Author        : Henri d'Orgeval
// Contributors  : 
// Last release  : 2007/11/09 (yy/mm/dd)
// Version       : 1.0.0.1
// Pattern       : "Real Time Trace"
// Internal name : ITraceable (RealTimeTrace Interfaces)
// Description   : this file contents all interfaces needed to implement RealTimeTrace
//                 
// Framework     : v2.0.50727 and above
//
// Licence       : Microsoft Permisse Licence
// W.A.I.S provides this code in the hope that it will be useful, but WITHOUT ANY WARRANTY , either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.          
// This library is free software; you can redistribute it and/or modify it under the terms of the Microsoft Permissive Licence
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
//---------------------------------------

using System;
using System.Collections.Generic;
//using System.Linq;
using System.Text;

namespace RealtimeTrace
{
    /// <summary>
    /// Interface between the client application and the RealtimeTrace framework.
    /// </summary>
    public interface ITraceInfo
    {

        /// <summary>
        /// Gets the count value. 
        /// This value is initialized to 1 and 
        /// is automatically incremented when instanciating an ItraceInfo object.
        /// This value gives the number of exceptions throwned within the application 
        /// since it has been loaded in the running win32 process.
        /// </summary>
        System.Int32 Count { get; }

        /// <summary>
        /// Gets the name of the class in which the exception has been thrown.
        /// </summary>
        string ClassName { get; }

        /// <summary>
        /// Gets the name of the Method/Property in which the exception has been thrown
        /// </summary>
        string MethodName { get; }

        /// <summary>
        /// Gets the collection of parameters passed to the method in which the exception occured.
        /// </summary>
        System.Collections.Generic.List<ITraceParamInfo> ParamInfoCollection { get; }

        /// <summary>
        /// Gets the collection of any additional parameters/variables/objects within the class in which the exception occured.
        /// </summary>
        System.Collections.Generic.List<ITraceParamInfo> ExtendedParamInfoCollection { get; }

        /// <summary>
        /// Gets a unique ID of the thread on which the exception has been fired.
        /// </summary>
        string ThreadID { get;}

        /// <summary>
        /// Gets or Sets the Execution Stack when the exception has been fired by the CLR.
        /// </summary>
        string ExceptionStack { get;}

        /// <summary>
        /// Gets the Execution Stack when the exception has been fired by the CLR.
        /// </summary>
        string EnvironmentStack { get; }

        /// <summary>
        ///  Gets the .NET type of the exception object raised by the CLR.
        /// </summary>
        string ExceptionType { get;}

        /// <summary>
        /// Gets the error message.
        /// </summary>
        string Message { get; }

        /// <summary>
        /// Gets the current Culture of the executing thread.
        /// </summary>
        string Culture { get; }

        /// <summary>
        /// Gets the current UICulture of the executing thread.
        /// </summary>
        string UICulture { get; }

        /// <summary>
        /// Gets the Date and Time at which the exception has been throwned.
        /// </summary>
        System.DateTime Date { get; }

        /// <summary>
        /// Gets or Sets a serialized version of the object in which the exception has been thrown.
        /// </summary>
        string ClassDump { get; set; }

    }
}
